package org.example.design.designmode.flyweight.jdk;

public class StringTest {

    public static void main(String[] args) {

        String s1 = "hello";
        String s2 = "hello";
        String s3 = "he" + "llo";
        String s4 = "he" + new String("llo");
        String s5 = new String("hello");
        String s6 = s5.intern();
        String s7 = "he";
        String s8 = "llo";
        String s9 = s7 + s8;
//        System.out.println(s1==s2);//true
//        System.out.println(s1==s3);//true
//        System.out.println(s1==s4);//false
//        System.out.println(s1==s5);//false
//        System.out.println(s1==s6);//true
        System.out.println(s1 == s9);//false

        //说明： String 不属于基本类型、虚拟机在底层通过常量池进行了优化（这里的常量池用到了享元模式），特点只要是以这种方式 "hello" 声明的
        //就属于常量它在编译阶段就已经可以执行完毕
        //如果是通过 new String（） 或者s7+s8 方式拼接的编译阶段是无法完成只有在运行阶段进行编译


    }
}
